Dynamically customizing a user interface for the aggregation of content

ABSTRACT

Enabling dynamic aggregation of content from a plurality of content providers. The invention stores references associated with specific display areas in a document for a particular data source. Responsive to a request for the document, the invention retrieves the references associated with the data source and dynamically inserts the references into the appropriate display area of the document. A client renders the document by obtaining the content associated with the references. In an embodiment, the invention includes a web service for cobranding a login user interface for a user authentication system. The web service places cobranding content provided by an affiliate content provider and sign-in user interface content provided by a user authentication service into different frames of a single web page.

TECHNICAL FIELD

Embodiments of the present invention relate to the field of userinterfaces. In particular, embodiments of this invention relate to thedynamic aggregation of content from multiple content providers intoseparate display areas in a user interface.

BACKGROUND OF THE INVENTION

Existing web pages use frames to separate the display of content in aweb browser. The web pages are statically defined in that associationsbetween the content and the appropriate frame are hard-coded into thedefinition of the web page. For example, a reference (e.g., a hyperlink)to a table-of-contents may be associated with a frame on the left sideof the web page while a reference to a particular chapter may beassociated with a frame on the right side of the web page. A web browserrenders the web page by retrieving and displaying the table-of-contentsin the left side frame and retrieving and displaying the particularchapter in the right side frame.

Altering the web page for another use requires manual intervention. Forexample, an administrator may wish to use the layout as described in theabove example for a parts catalog. The administrator wants to display alist of parts in the left side frame and a specific part in the rightside frame. The administrator has to manually edit the web page from theabove example to remove the existing references to the table-of-contentsand to the particular chapter and add the references to the list ofparts and to the specific part. The existing systems fail to enable thedynamic insertion of references into a web page.

Accordingly, a system for dynamically generating a web page withspecified references is desired to address one or more of these andother disadvantages.

SUMMARY OF THE INVENTION

Embodiments of the invention enable the dynamic generation of a documentfor aggregating content from a plurality of content providers. In anembodiment, the invention includes defining for a particular contentprovider a document having a plurality of display areas, receiving atleast one content reference from a content provider, and associating thereceived reference with a display area identifier related to at leastone of the plurality of display areas in the defined document. Theembodiment of the invention further stores the associated reference, thedisplay area identifier, and a content provider identifier associatedwith the content provider in a memory area. Responsive to a request fromthe particular content provider including the content provideridentifier, the embodiment of the invention accesses the memory area toretrieve the stored reference and display area identifier. Theembodiment of the invention inserts the retrieved reference into thedocument based on the retrieved display area identifier and sends thedocument with the inserted reference to the content provider or directlyto a user.

In accordance with one aspect of the invention, a method includesdefining a web page having a plurality of frames. The method furtherincludes receiving a hyperlink from a content provider. The hyperlinkidentifies content associated with the content provider. The contentprovider has a content provider identifier associated therewith. Themethod also includes associating the received hyperlink with a frameidentifier related to one of the plurality of frames in the defined webpage. The method further includes storing the associated hyperlink, theframe identifier, and the content provider identifier in a memory area.

In accordance with another aspect of the invention, one or morecomputer-readable media have computer-executable components. Thecomponents include a template component, an interface component, and amemory component. The template component defines a document having aplurality of display areas. The interface component receives a referencefrom a content provider. The reference identifies content. The contentprovider has a content provider identifier associated therewith. Theinterface component associates the received reference with a displayarea identifier related to at least one of the plurality of displayareas in the document defined by the template component. The memorycomponent stores the reference, the display area identifier, and thecontent provider identifier in a memory area.

In accordance with yet another aspect of the invention, a system enablesthe dynamic aggregation of content from a plurality of contentproviders. The system includes a first memory area to store a documentdefining a plurality of display areas. The system also includes a secondmemory area to store a plurality of references each identifying contentassociated with a content provider. Each of the plurality of referencesis associated with one of the plurality of display areas in the documentstored by the first memory area. The system also includes a computingdevice to dynamically insert each of the plurality of references storedin the second memory area into the associated display area of thedocument stored in the first memory area responsive to a request for thedocument.

In accordance with still another aspect of the invention, a web serviceprovides a cobranded login user interface. The web service includes aweb page defining a plurality of frames. The web service also includes aplurality of hyperlinks each identifying content associated with acontent provider. Each of the plurality of hyperlinks is associated withone of the plurality of frames defined in the web page. The content forone of the plurality of hyperlinks includes a user name text box and apassword text box. The web service further includes computer-executableinstructions to dynamically insert each of the plurality of hyperlinksinto the associated frame in the web page responsive to a request forthe web page.

Alternatively, the invention may comprise various other methods andapparatuses.

Other features will be in part apparent and in part pointed outhereinafter.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an exemplary embodiment of a cobranded document.

FIG. 2 is a block diagram illustrating the relationship between ahypertext document and frames therein.

FIG. 3 is a block diagram illustrating one example of a suitable networkenvironment in which the invention may be implemented.

FIG. 4 is an exemplary flow chart illustrating operation of a procedureallowing a content provider to submit content references for dynamicinclusion in a template document.

FIG. 5 is an exemplary flow diagram describing the dynamic aggregationof content from multiple content providers into a single document.

FIG. 6 is an exemplary flow diagram illustrating the interaction betweena client computer, an affiliate server, and an authentication serverwhen a user of the client computer seeks access to the affiliate server.

FIG. 7 is a block diagram illustrating the relationships between aclient computing device, a web service computing device, and memoryareas for implementing the invention.

FIG. 8 is a block diagram illustrating one example of a suitablecomputing system environment in which the invention may be implemented.

Corresponding reference characters indicate corresponding partsthroughout the drawings.

DETAILED DESCRIPTION OF THE INVENTION

A portal web site offers computer-based services, such as e-mail,instant messaging, calendar, and portfolio tracking, and routes a userto affiliated web sites for performing the desired services. Users needto register at certain web sites to access services. Centralizedpassword registration services enable a user to register at one place toaccess many sites. When a user subsequently visits a web site for whichthe user has registered, the web site performs user authentication.Although presently available multi-site user authentication systems orlogin services permit a web user to maintain a single login identifierand associated password for accessing multiple affiliated web servers orservices, further improvements are desired.

Part of the typical process for authentication involves collectingcredentials from the user. One approach for collecting credentialsincludes a web-based interface using hypertext markup language (HTML),hosted by the same web property operating the login service. One of theusability problems in some multi-site user authentication systems is theconceptual disconnect between the task that the user is trying toaccomplish and the authentication process. For example, a user may betrying to access electronic mail at an electronic mail service, butclicking on a sign-in button takes the user out of this flow and into apage controlled by an authentication service. Such discontinuity in theuser experience may lead to confusion. In addition to credentialcollection, other aspects of identity-management such as registering fora new account, password change, and editing data in user profile may becobranded. The user may be more likely to proceed with an initialsign-in or registration process if the user can identify a connectionwith a known site and, thus, verify the implicit trust between affiliateand authentication web sites.

To avoid this problem, previous systems employed “cobranding” in whichaffiliated sites customize elements of the user experience associatedwith authentication. Presently available techniques for web sites toaggregate content (e.g., cobranding) between the sites require one siteto physically host elements for the affiliated site. The hosting sitemust then render these elements from the centralized location. Forservices, which have many affiliates with diverse needs, theinfrastructure needed to support such cobranding is extensive and costlyto maintain. Inasmuch as conventional cobranding calls for the affiliatecontent to be maintained at the central site, affiliate sites also lackcontrol and flexibility with respect to their cobranding elements. Theprior systems also lack support for more advanced style features.Previous cobranding designs display the content from all data sources ina single frame in the web browser.

Some previous cobranding implementations also created a securityvulnerability. The prior systems also display the content from all datasources in a single frame in the web browser that allows maliciouscontent from the data sources to interact with other content in theframe. These prior systems execute a script in a web page aggregatingthe content to include content from an affiliate. Executing the scriptplaces unverified HTML content (e.g., active content such as JAVASCRIPT)from the affiliate in a web page. Scripting allows malicious interactionin the web page between content from different sources. For example,scripting allows a malicious or compromised affiliate to interfere withdata collection by another web site by harvesting credentials, profileinformation, or credit card information from content associated withanother affiliate.

Embodiments of the invention enable the dynamic aggregation of contentfrom a plurality of content providers into a single document whilemaintaining separation between the content from different contentproviders. For example, a system according to an embodiment of theinvention permits an affiliated site to dynamically insert its ownbranding elements and messaging with the centralized interfaces, orpages, provided by the multi-site user authentication system. This isreferred to generally as cobranding and allows a web site to provide aconsistent look and feel to the user even though the user has beenrouted from one site to another site to obtain a service (e.g., sign in,e-mail, calendar, etc.). The invention provides cobranding betweenaffiliates while eliminating the need for extensive infrastructure at acentral location for physically hosting elements for the other sites.

Distributed cobranding in this manner permits a centralized service tobe seamlessly integrated with one or more affiliate services bydynamically inserting branding elements and messaging with thecentralized pages. Cobranding allows affiliate websites partial controlover the user interface of another web service to create a relativelyseamless transition between affiliate websites when a user is directedbetween sites to complete a task such as authentication. Cobrandingaccording to embodiments of the invention further provides flexibilityto affiliates that want their brand and look-and-feel to be visible tothe user during various operations or tasks (e.g., login).

Moreover, embodiments of the invention permit more advanced stylefeatures such as nested frames or customization functions (e.g.,cascading style sheets). Rather than merely displaying the content fromall data sources in a single frame in the web browser, aspects of theinvention involve allowing third parties to author HTML content to berendered in separate frames in a web browser to improve security.

In one embodiment, references (e.g., hyperlinks) to content from eachcontent provider are dynamically inserted into a top-level document(e.g., a template document). A web site according to the inventionstores the references to the content in a database. Responsive to a userrequest, the references are retrieved from the database and insertedinto the top-level document dynamically. The invention determines whichreferences to retrieve from the database using query string parameters(e.g., CBID, ID, or a default identifier, in that order) in the userrequest.

The invention in this embodiment renders a participating site'scobranding content in its own frame (or frames) via references such ashyperlinks. The content may include, but is not limited to, JAVASCRIPT,applets, and hypertext markup language (HTML) form controls. Also,because the content for each frame is loaded independently, each framemay use its own style sheet or background image. Further, code executingin one frame cannot access the contents of another frame unless theaccess attempt satisfies a security policy. For example, the securitypolicy may include a comparison of the references of each frame involvedin the access attempt to determine if the references are directed to thesame content provider or web site. In this manner, two frames from thesame web site may interact.

Further, the HTML seen by the user is exactly the HTML provided in thecobranding file. These features expand the flexibility of cobrandingwhile greatly easing the time and effort needed to develop and debugcobranding content.

In an embodiment, the invention includes a web service for cobranding alogin user interface for a user authentication system. The web serviceplaces cobranding content provided by an affiliate content provider andsign-in user interface content provided by a user authentication serviceinto separate and different frames of a single web page. In oneembodiment, the use of hypertext markup language (HTML) frames in a webbrowser achieves content separation and independence and preventscross-domain access between frames so that content from one affiliatecontent provider cannot access content from another affiliate contentprovider. Another aspect of the invention allows each cobranded frame tospecify its own encoding instead of formatting all cobranding contentusing the same character encoding as the login user interface.Specifying the encoding per frame increases the variety of content typesto be aggregated in a single document.

Another aspect of the invention further provides security under variousattack scenarios while maintaining superior flexibility (e.g.,supporting many HTML features) and enabling the aggregation ofunverified content from multiple content providers. In an embodiment,the invention provides a cobranding service that is secure againstseveral attacks including, but not limited to, a man-in-the-middleattack against the user and an attack involving a compromised affiliatecontent provider serving malicious content. Embodiments of the inventionmeet the cobranding needs of affiliated sites, minimize the burden ofhosting content at a centralized site, improve the security of cobrandedpages, eases the development and debugging of cobranding content, enableflexible internationalization of cobranding, and are compatible withexisting web browsers.

Cobranding with Frames

Referring first to FIG. 1, an exemplary embodiment of a cobrandeddocument is shown. In this example, a top-level document 102 such as aweb page defined by an extensible markup language template (XML) filedisplays a cobranded login user interface. In one embodiment, thetop-level document is a self-contained piece of work created and savedas a file and a template is a specific example of a document. The webpage, when loaded, displays a frameset containing multiple inline frames(e.g., iframes) as defined by the XML template file. The XML templatefile includes frameset dimensions and properties of the login frame. Theappearance of a login frame 104 is modifiable via the XML template file.

The inline frameset isolates content from the various data sources. Oneof these frames includes the login frame 104 displaying user name andpassword fields. The content for the login frame 104 is obtained from auser authentication service. The cobranding frames 106 may include, forexample, a participating web site's cobranding content that is loadedfrom the web site's server. The frames 104, 106 and frame fragments aredownloaded in parallel in one web browser implementation via a protocolsuch as hypertext transfer protocol secure (HTTPS).

Referring next to FIG. 2, a block diagram illustrates the relationshipbetween a hypertext document and frames therein. A top-level document202 such as top-level document 102 includes references such ashyperlinks to multiple frames (e.g., cobranding frames) such as frames1, 2, and 3. Frame 2 may include references to other frames such asframes 2A and 2B. The functionality and operation of web browser framesare well known in the art.

The content of the cobranding frames is stored in one or more fileshosted by the participating web site. The participating web site hascontrol over the format (e.g., colors and fonts) and data (e.g., text,graphics, audio, and video) included in these files including the use ofcascading style sheets (CSS), scripting, and other elements such asapplets or form controls. A participating web site specifies characterencoding and incorporates images, graphic elements, and text to surroundthe login frame and make the web page blend into the graphical scheme ofthe rest of the web site. The participating web site also has a limitedability to manipulate the appearance of the login frame to furtherimprove the flow of the sign-in experience. In one embodiment, aninheritance mechanism enables the participating web site to inherit someor all of the properties of the top-level document or other containingframe. For example, properties that may be inherited include, but arenot limited to, style properties such as color, font, and characterencoding.

In a web browser embodiment, the invention provides backwardscompatibility for web browsers, support for inline and regular framesdepending on browser version, navigation buttons such as backward andforward buttons, explicit links in HTML for navigating backward andforward, and event handlers for script navigation. The inventionprevents the harvesting of user-credentials or profile data assumingthat the underlying protocols such as secure sockets layer arecryptographically secure and that the client web-browser is secure. Thestrict frame layout assigns each frame a specific location, size andz-index for controlling background versus foreground rendering on thepage. Further, the invention may register an event handler on thetop-level document that is triggered on navigation to further ensureseparation of content.

According to an embodiment of the invention, the affiliated sitedynamically inserts its own branding elements and/or messaging with thecentralized pages via hyperlinks, which may include authenticationinterfaces, provided by the multi-site user authentication system. Thismay also include areas, such as textboxes, where the user can interactwith the user interface (UI), and it may also include hidden elements,and/or code that the user does not see directly, but is used tocommunicate with the central system. For example, the central servercontent includes centralized registration, sign in, express purchaseservice pages, and the like. The affiliate site preferably specifiesmany aspects of the layout and content of the central network pages,with the exception of specific UI areas designated for use by thecentral pages. For example, specific UI areas are set aside to displayforms used for the actual sign-in or registration process. Althoughdescribed herein in connection with service cobranding in a multi-siteuser authentication system such as illustrated in FIG. 3, it is to beunderstood that the present invention is suitable for use in any numberof environments. Centralized network environments generally benefit fromaspects of the invention, allowing a distributed set of affiliate sitesto aggregate content through the client browser as if it were a singlesite (or page). Thus, the invention provides a powerful tool for quicklybuilding highly dynamic content without burdening the aggregating sitewith the cost of supporting the bandwidth required for serving thecontent.

Exemplary Network Environment

Referring next to FIG. 3, a block diagram illustrates one example of asuitable network environment in which the invention may be implemented.FIG. 3 illustrates an exemplary network environment in which the presentinvention is utilized. The invention relates to cross-networkcollaboration between web sites as part of a distributed, multi-siteuser authentication system. Such services provide a user with theability to access one or more participating web sites or resources witha single sign-in. Although the participating, or affiliate, sites stillmaintain control over permissions, they use the authentication servicerather than hosting and maintaining their own proprietary authenticationsystems. Although the invention is described in terms of a multi-siteuser authentication system, the invention is operable with any type andnumber of authentication systems.

In FIG. 3, one or more client computer systems 302 are coupled to a datacommunication network 304. In this example, the network 304 is theInternet (e.g., supporting the World Wide Web). However, the teachingsof the present invention can be applied to any data communicationnetwork. Multiple affiliate servers 306 are also coupled to network 304.In turn, the client computer systems 302 can access the affiliateservers 306 via network 304. Affiliate servers 306 are also referred toas web servers or network servers.

Although authentication database 312 is shown separately fromauthentication server 310, it is to be understood that in otherembodiments of the invention, authentication database 312 may becontained within authentication server 310. In a federated environment,for example, a plurality of authentication servers 310 may be used toprovide authentication.

In one embodiment, the invention provides client aggregation of contentbetween web sites, such as those hosted by affiliate servers 306 and byauthentication server 310 as part of a distributed, multi-site userauthentication system. In general, cobranding is a process by which theaffiliate server 306 provides its own content to customize network pagesprovided by a central site such as the authentication server 310. Theauthentication server 310 displays pages that include both its owncontent and cobranded network server content from affiliate servers 306.An embodiment of the invention defines templates for each page thatinclude cobranded content. The templates assign portion(s) of the userinterface for content from the affiliate server 306 and portion(s) ofthe user interface for content from the authentication server 310.

Creating the Template

Referring next to FIG. 4, an exemplary flow chart illustrates operationof a procedure allowing a content provider to submit content referencesfor dynamic inclusion in a template document. An embodiment of theinvention includes a method of enabling the dynamic aggregation ofcontent from a plurality of content providers. In particular, the methodincludes defining a document (e.g., a web page) having a plurality ofdisplay areas (e.g., frames) at 402. Defining includes specifying thesize and positioning of each of the display areas as well as assigning adisplay area identifier (e.g., a string HTML ID) to each display area.In one implementation, an automated tool enables design and creation ofthis document as well as template files for each of the display areas.The defined document acts as a centralized web page in which portions(e.g., the display areas) are specified to receive content (e.g., alogo) from a participating affiliate server.

In one embodiment, the frames are adjacent. In other embodiments, theframes exhibit overlap or space exists between the frames. In a webbrowser embodiment, the frames are rectangular. In other embodiments,the frames take the form of other shapes as supported by the particularmarkup language implementing the invention.

The method further includes receiving at least one reference from atleast one content provider at 404. In one embodiment, the methodincludes receiving content from a plurality of content providers. Thereceived reference, or set of references, identifies content hosted byan affiliate server. The affiliate server updates or modifies thecontent. In one embodiment, the reference is a hyperlink comprising anetwork address such as a uniform resource locator (URL). In oneexample, the affiliate server may also provide cascading style sheets(CSS) to modify the appearance of the HTML in the affiliate displayareas on the defined document at a style level as desired by theaffiliate servers. The CSS file allows the affiliate server to changebasic style elements such as text colors, fonts, and vertical spacingbetween paragraphs for the display areas associated with the affiliate.In one example, the CSS URL that is registered with the invention mayalso have query string parameters added to it thus allowing theaffiliate server to dynamically change the styles defined by thecascading style sheet. In addition, the affiliate server may supply someCSS attributes to modify the style of the display areas associated withthe central site. These attributes are “safe” attributes including, butnot limited to, font type, font size, and color. Responsive to a requestfrom the affiliate server, an embodiment of the invention automaticallygenerates an inline CSS on the fly based on the information that theaffiliate server has provided. This improves security by ensuring thatthe content provided by the affiliate server is safe to include withinthe document.

An affiliate sets the style for the display areas associated with theaffiliate by providing the content (e.g., HTML) for the display areas.However, the content provided by the affiliate does not influence thestyle for the display areas associated with the central site. Instead,the affiliate may express various preferences such as frame sizes,positioning, z-index, and customizable attributes for the display areasprovided by the central site. For example, the affiliate may ask thecentral site to use a font consistent with the affiliate's content. Thepreferences (along with the references for each display area) areexpressed in a file such as shown below. In the example below, the fileis an XML document provided to the central site by the affiliate serverduring setup. The central site stores the preferences including thereferences. A portion of an exemplary XML document specifyingpreferences is shown below:

<LayOut ident=“Login”>   <TopLevel>Design#1</TopLevel>   <FrameSrcname=“Header”>     http://pageA.net/welcome   </FrameSrc> </LayOut>

The method also includes receiving a content provider identifierassociated with the content provider at 406. The method further includesassociating the received reference with a display area identifierrelated to at least one of the plurality of display areas in the defineddocument at 408. The method also includes storing the associatedreference, the display area identifier, and the content provideridentifier in a memory area such as a database at 410.

When the affiliate server redirects the user to the defined document(e.g., hosted by another web server such as an authentication server),the affiliate server identifies a set of references stored in the memoryarea (e.g., through the user of query string parameters). The defineddocument is populated with the identified set of references. The user'sweb browser or other user interface operates to retrieve the contentspecified by the set of references (see FIG. 5).

For example, an XML document populated with the references specific tothe affiliate server may appear as follows:

<HTML>   <FRAME src= http://pageA.net/welcome>   <FRAME src=http://pageB.net/header?cb=...>   ... </HTML>

In a particular embodiment, the method includes defining a web pagehaving a plurality of frames and receiving a hyperlink from a contentprovider. The hyperlink identifies content associated with the contentprovider. The method also includes associating the received hyperlinkwith a frame identifier related to one of the plurality of frames in thedefined web page. The method includes storing the associated hyperlink,the frame identifier, and the content provider identifier in a memoryarea.

One or more computer-readable media have computer-executableinstructions for performing the method illustrated in FIG. 4.

Dynamically Creating the Document

Referring next to FIG. 5, an exemplary flow diagram describes thedynamic aggregation of content from multiple content providers into asingle document. In general, the method includes receiving a request forthe document at 502. The request comprises the content provideridentifier. Responsive to the received request, the method includesretrieving the stored reference and display area identifier based on thecontent provider identifier at 504. The method also includes insertingthe retrieved reference into the document based on the retrieved displayarea identifier at 506. The method further includes sending the documentwith the reference to a client computing device at 508. An applicationprogram (e.g., a web browser) executing on the client computing devicerenders the document with the reference by retrieving the content fromthe content provider via the reference and displaying the retrievedcontent in the display area identified by the display area identifier.In an alternative embodiment, the method sends the document to thecontent provider for delivery to the client computing device.

One or more computer-readable media have computer-executableinstructions for performing the method illustrated in FIG. 5.

Referring next to FIG. 6, an exemplary flow diagram illustrates theinteraction between a client computer such as client computer 302executing a client web browser 602, an affiliate server 604 such asaffiliate server 306, and an authentication server 606 such asauthentication server 310 when a user of the client computer seeksaccess to the affiliate server 604. According to the invention, theaffiliate server 604 registers information with the authenticationserver 606 prior to the process flow shown in FIG. 6 to permit theauthentication server 606 to obtain the branding content desired by theaffiliate server 604. The lines in FIG. 6 labeled “A” through “F”represent the flow of information or activities during the cobrandingprocess. The arrows on the lines indicate the direction of the processflow. The label “A” represents the beginning of the process and thelabel “F” represents the end of the process. In an embodiment, processflows indicated by lines B-F occur sequentially in a single page renderto the client browser 602 resulting from the process flow indicated byline A.

In the exemplary process flow of FIG. 6, the user of the client browser602 seeks access to the affiliate server 604. In this example, the userinitiates an HTTP GET command to a selected site hosted by the affiliateserver 604 (see flow indicated by reference character A in FIG. 6). Theaffiliate server 604 redirects the client browser 602 to a centralizedpage at the authentication server 606 via an HTTP or HTTPS link. In anembodiment of the invention, the link includes the keywordsID={registered affiliate identification} and CB={callback string givento client to allow cobranding at page level}. During registration, theaffiliate server 604 provided the authentication server 606 (or otherserver) with references linked to content provided by the affiliateserver 604. The authentication server 606 previously stored thereferences using an identifier associated with the affiliate server 604as an index to later retrieve the references.

The affiliate server 604 redirects the client browser 602 to theauthentication server 606 with the CB query string parameter set to achosen string or character value, passing this information as strings inthe URL. (See B). The client browser 602 responds by issuing an HTTP orHTTPS GET command to the authentication server 606. (See C). Theauthentication server 606 uses the ID keyword for the particularaffiliate server 604 to look up the references stored by theauthentication server 606 (or other server). The authentication server606 performs a lookup based on the value of the incoming ID=keyword onthe query string to obtain the references stored for the affiliateserver 604. The authentication server 606 dynamically inserts the storedreferences into a web page and delivers the dynamically created web pageto the client browser 602. (See D). When rendering the web page receivedfrom the authentication server 606, the client browser 602 downloadscontent (e.g., from the affiliate server 604) associated with thereferences in the web page. (See E and F).

This technique provides the impression that the page is fully renderedby the affiliate server 604 when portions are actually rendered by theauthentication server 606. Moreover, the central site need not host allcobranding elements for every affiliate server 604, which reduces itsinfrastructure needs.

Exemplary System Structure

Referring next to FIG. 7, a block diagram illustrates the relationshipsbetween a client computing device 702, a web service computing device704, and memory areas 706, 708 for implementing the invention. Thecomponents illustrated in FIG. 7 may be located on one computer-readablemedium and/or computing device. Alternatively, the components may bedistributed across any quantity of computer-readable media and/orcomputing devices communicating via a network 710.

The exemplary system of FIG. 7 enables the dynamic aggregation ofcontent from a plurality of content providers. The system includes afirst memory area 706, a second memory area 708, the web servicecomputing device 704, and the client computing device 702. The firstmemory area 706 stores a document (e.g., a template web page 712)defining a plurality of display areas. The second memory area 708 storesa list 714 or plurality of references and associated frame identifiers.The references each identify content associated with a content provider.Each of the plurality of references is associated with one of theplurality of display areas via the frame identifiers in the documentstored by the first memory area 706. In one embodiment, the secondmemory area 708 stores a list of the references and frame identifiersindexed by content provider identifier. The first memory area 706 andthe second memory area 708 may be the same or different databases andmay be located within the same or different computer-readable media.

The web service computing device 704 dynamically inserts each of theplurality of references stored in the second memory area 708 into theassociated display area of the document stored in the first memory area706 responsive to a request for the document from the client computingdevice 702. The web service computing device 704 sends the document withthe references to the client computing device 702. The client computingdevice 702 includes a client application program 716 (e.g., a webbrowser) executing to render the document received from the web servicecomputing device 704 by retrieving content via the references.

In one embodiment, the web service computing device 704 has associatedtherewith at least one computer-readable medium 718 havingcomputer-executable components for enabling the dynamic aggregation ofcontent from a plurality of content providers. The components include atemplate component 720, an interface component 722, a memory component724, and a generation component 726. The template component 720 definesthe document (e.g., the template web page 712) with the plurality ofdisplay areas and stores the document in a memory area such as the firstmemory area 706. The interface component 722 receives a reference from acontent provider and associates the received reference with a displayarea identifier related to at least one of the plurality of displayareas in the document defined by the template component 720. The memorycomponent 724 stores the reference, the display area identifier, and thecontent provider identifier in a memory area such as the second memoryarea 708.

The interface component 722 further receives a request for the document.The request includes a content provider identifier. The memory component724, responsive to the request received by the interface component 722,retrieves the stored reference and display area identifier from thesecond memory area 708 based on the content provider identifier. Thegeneration component 726 inserts the reference retrieved by the memorycomponent 724 into the document based on the display area identifierretrieved by the memory component 724. The interface component 722 sendsthe document with the reference inserted by the generation component 726to the client computing device 702. An application program executing onthe client computing device 702 renders the document with the referenceby retrieving the content from the content provider via the referenceand displaying the retrieved content in the display area identified bythe display area identifier.

Exemplary Operating Environment

FIG. 8 shows one example of a general purpose computing device in theform of a computer 130. In one embodiment of the invention, a computersuch as the computer 130 is suitable for use in the other figuresillustrated and described herein. Computer 130 has one or moreprocessors or processing units 132 and a system memory 134. In theillustrated embodiment, a system bus 136 couples various systemcomponents including the system memory 134 to the processors 132. Thebus 136 represents one or more of any of several types of busstructures, including a memory bus or memory controller, a peripheralbus, an accelerated graphics port, and a processor or local bus usingany of a variety of bus architectures. By way of example, and notlimitation, such architectures include Industry Standard Architecture(ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA)bus, Video Electronics Standards Association (VESA) local bus, andPeripheral Component Interconnect (PCI) bus also known as Mezzanine bus.

The computer 130 typically has at least some form of computer readablemedia. Computer readable media, which include both volatile andnonvolatile media, removable and non-removable media, may be anyavailable medium that may be accessed by computer 130. By way of exampleand not limitation, computer readable media comprise computer storagemedia and communication media. Computer storage media include volatileand nonvolatile, removable and non-removable media implemented in anymethod or technology for storage of information such as computerreadable instructions, data structures, program modules or other data.For example, computer storage media include RAM, ROM, EEPROM, flashmemory or other memory technology, CD-ROM, digital versatile disks (DVD)or other optical disk storage, magnetic cassettes, magnetic tape,magnetic disk storage or other magnetic storage devices, or any othermedium that may be used to store the desired information and that may beaccessed by computer 130. Communication media typically embody computerreadable instructions, data structures, program modules, or other datain a modulated data signal such as a carrier wave or other transportmechanism and include any information delivery media. Those skilled inthe art are familiar with the modulated data signal, which has one ormore of its characteristics set or changed in such a manner as to encodeinformation in the signal. Wired media, such as a wired network ordirect-wired connection, and wireless media, such as acoustic, RF,infrared, and other wireless media, are examples of communication media.Combinations of the any of the above are also included within the scopeof computer readable media.

The system memory 134 includes computer storage media in the form ofremovable and/or non-removable, volatile and/or nonvolatile memory. Inthe illustrated embodiment, system memory 134 includes read only memory(ROM) 138 and random access memory (RAM) 140. A basic input/outputsystem 142 (BIOS), containing the basic routines that help to transferinformation between elements within computer 130, such as duringstart-up, is typically stored in ROM 138. RAM 140 typically containsdata and/or program modules that are immediately accessible to and/orpresently being operated on by processing unit 132. By way of example,and not limitation, FIG. 8 illustrates operating system 144, applicationprograms 146, other program modules 148, and program data 150.

The computer 130 may also include other removable/non-removable,volatile/nonvolatile computer storage media. For example, FIG. 8illustrates a hard disk drive 154 that reads from or writes tonon-removable, nonvolatile magnetic media. FIG. 8 also shows a magneticdisk drive 156 that reads from or writes to a removable, nonvolatilemagnetic disk 158, and an optical disk drive 160 that reads from orwrites to a removable, nonvolatile optical disk 162 such as a CD-ROM orother optical media. Other removable/non-removable, volatile/nonvolatilecomputer storage media that may be used in the exemplary operatingenvironment include, but are not limited to, magnetic tape cassettes,flash memory cards, digital versatile disks, digital video tape, solidstate RAM, solid state ROM, and the like. The hard disk drive 154, andmagnetic disk drive 156 and optical disk drive 160 are typicallyconnected to the system bus 136 by a non-volatile memory interface, suchas interface 166.

The drives or other mass storage devices and their associated computerstorage media discussed above and illustrated in FIG. 8, provide storageof computer readable instructions, data structures, program modules andother data for the computer 130. In FIG. 8, for example, hard disk drive154 is illustrated as storing operating system 170, application programs172, other program modules 174, and program data 176. Note that thesecomponents may either be the same as or different from operating system144, application programs 146, other program modules 148, and programdata 150. Operating system 170, application programs 172, other programmodules 174, and program data 176 are given different numbers here toillustrate that, at a minimum, they are different copies.

A user may enter commands and information into computer 130 throughinput devices or user interface selection devices such as a keyboard 180and a pointing device 182 (e.g., a mouse, trackball, pen, or touch pad).Other input devices (not shown) may include a microphone, joystick, gamepad, satellite dish, scanner, or the like. These and other input devicesare connected to processing unit 132 through a user input interface 184that is coupled to system bus 136, but may be connected by otherinterface and bus structures, such as a parallel port, game port, or aUniversal Serial Bus (USB). A monitor 188 or other type of displaydevice is also connected to system bus 136 via an interface, such as avideo interface 190. In addition to the monitor 188, computers ofteninclude other peripheral output devices (not shown) such as a printerand speakers, which may be connected through an output peripheralinterface (not shown).

The computer 130 may operate in a networked environment using logicalconnections to one or more remote computers, such as a remote computer194. The remote computer 194 may be a personal computer, a server, arouter, a network PC, a peer device or other common network node, andtypically includes many or all of the elements described above relativeto computer 130. The logical connections depicted in FIG. 8 include alocal area network (LAN) 196 and a wide area network (WAN) 198, but mayalso include other networks. LAN 136 and/or WAN 138 may be a wirednetwork, a wireless network, a combination thereof, and so on. Suchnetworking environments are commonplace in offices, enterprise-widecomputer networks, intranets, and global computer networks (e.g., theInternet).

When used in a local area networking environment, computer 130 isconnected to the LAN 196 through a network interface or adapter 186.When used in a wide area networking environment, computer 130 typicallyincludes a modem 178 or other means for establishing communications overthe WAN 198, such as the Internet. The modem 178, which may be internalor external, is connected to system bus 136 via the user input interface184, or other appropriate mechanism. In a networked environment, programmodules depicted relative to computer 130, or portions thereof, may bestored in a remote memory storage device (not shown). By way of example,and not limitation, FIG. 8 illustrates remote application programs 192as residing on the memory device. The network connections shown areexemplary and other means of establishing a communications link betweenthe computers may be used.

Generally, the data processors of computer 130 are programmed by meansof instructions stored at different times in the variouscomputer-readable storage media of the computer. Programs and operatingsystems are typically distributed, for example, on floppy disks orCD-ROMs. From there, they are installed or loaded into the secondarymemory of a computer. At execution, they are loaded at least partiallyinto the computer's primary electronic memory. The invention describedherein includes these and other various types of computer-readablestorage media when such media contain instructions or programs forimplementing the steps described below in conjunction with amicroprocessor or other data processor. The invention also includes thecomputer itself when programmed according to the methods and techniquesdescribed herein.

For purposes of illustration, programs and other executable programcomponents, such as the operating system, are illustrated herein asdiscrete blocks. It is recognized, however, that such programs andcomponents reside at various times in different storage components ofthe computer, and are executed by the data processor(s) of the computer.

Although described in connection with an exemplary computing systemenvironment, including computer 130, the invention is operational withnumerous other general purpose or special purpose computing systemenvironments or configurations. The computing system environment is notintended to suggest any limitation as to the scope of use orfunctionality of the invention. Moreover, the computing systemenvironment should not be interpreted as having any dependency orrequirement relating to any one or combination of components illustratedin the exemplary operating environment. Examples of well known computingsystems, environments, and/or configurations that may be suitable foruse with the invention include, but are not limited to, personalcomputers, server computers, hand-held or laptop devices, multiprocessorsystems, microprocessor-based systems, set top boxes, programmableconsumer electronics, mobile telephones, network PCs, minicomputers,mainframe computers, distributed computing environments that include anyof the above systems or devices, and the like.

The invention may be described in the general context ofcomputer-executable instructions, such as program modules, executed byone or more computers or other devices. Generally, program modulesinclude, but are not limited to, routines, programs, objects,components, and data structures that perform particular tasks orimplement particular abstract data types. The invention may also bepracticed in distributed computing environments where tasks areperformed by remote processing devices that are linked through acommunications network. In a distributed computing environment, programmodules may be located in both local and remote computer storage mediaincluding memory storage devices.

An interface in the context of a software architecture includes asoftware module, component, code portion, or other sequence ofcomputer-executable instructions. The interface includes, for example, afirst module accessing a second module to perform computing tasks onbehalf of the first module. The first and second modules include, in oneexample, application programming interfaces (APIs) such as provided byoperating systems, component object model (COM) interfaces (e.g., forpeer-to-peer application communication), and extensible markup languagemetadata interchange format (XMI) interfaces (e.g., for communicationbetween web services).

The interface may be a tightly coupled, synchronous implementation suchas in Java 2 Platform Enterprise Edition (J2EE), COM, or distributed COM(DCOM) examples. Alternatively or in addition, the interface may be aloosely coupled, asynchronous implementation such as in a web service(e.g., using the simple object access protocol). In general, theinterface includes any combination of the following characteristics:tightly coupled, loosely coupled, synchronous, and asynchronous.Further, the interface may conform to a standard protocol, a proprietaryprotocol, or any combination of standard and proprietary protocols.

The interfaces described herein may all be part of a single interface ormay be implemented as separate interfaces or any combination therein.The interfaces may execute locally or remotely to provide functionality.Further, the interfaces may include additional or less functionalitythan illustrated or described herein.

In operation, computer 130 executes computer-executable instructionssuch as those illustrated in FIG. 4 and FIG. 5 to implement theinvention.

While the invention is described with reference to authentication andcobranding, the invention is limited to neither. The invention isapplicable to any environment in which content is aggregated frommultiple content providers into separate display areas in a singledocument. The display areas have certain properties as described herein.For example, one implementation of the invention uses frames in a webbrowser as supported by a hypertext markup language (HTML), but otherimplementations may use other features of other markup languages notspecifically described herein.

Further, the client through which the content is communicated to theuser may be a computing device such as computer 130, an applicationprogram, or both. Any clients exhibiting content separation propertiessuch as those associated with web browser frames are suitable for usewith the invention. Exemplary clients include a cellular telephone(e.g., a smartphone device), a pager, and a handheld computing device(e.g., a personal digital assistant or a Pocket PC device). Further, theclient may include any of the above exemplary devices enabled with aninformation service such as a SMART PERSONAL OBJECTS TECHNOLOGY (SPOT)brand of telecommunication service and/or devices. The informationservice comprises a computing infrastructure (e.g., a telecommunicationservice) for sending data and information to personal and home devicesvia computer networks, wireless networks and the Internet. The clientswhich may be enabled with the information service include, but are notlimited to, the following devices: clocks, alarm clocks, radiosincorporating clocks, watches, billfolds, wallets, checkbook andpassbook wallets, purses, pens, metal key rings, key holders, wirelessdevices, computer hardware (e.g., peripherals, monitors, and displays),electronic calendar devices, and refrigerator magnets. Further,magazines, books, and user manuals relating to computers, computerprograms, personal information devices and wireless communications mayalso incorporate the information service. The information serviceenables billions of devices to communicate with each other. For example,customers select the type of information and services they want toreceive on the enabled devices via a configuration web page. Thiscontent is subsequently beamed to and displayed on the device.Information available to users on devices using the information serviceincludes personal messages, calendar updates, and customized news,weather, financial and sports information.

The order of execution or performance of the methods illustrated anddescribed herein is not essential, unless otherwise specified. That is,elements of the methods may be performed in any order, unless otherwisespecified, and that the methods may include more or less elements thanthose disclosed herein.

When introducing elements of the present invention or the embodiment(s)thereof, the articles “a,” “an,” “the,” and “said” are intended to meanthat there are one or more of the elements. The terms “comprising,”“including,” and “having” are intended to be inclusive and mean thatthere may be additional elements other than the listed elements.

In view of the above, it will be seen that the several objects of theinvention are achieved and other advantageous results attained.

As various changes could be made in the above constructions, products,and methods without departing from the scope of the invention, it isintended that all matter contained in the above description and shown inthe accompanying drawings shall be interpreted as illustrative and notin a limiting sense.

1. A method of enabling dynamic aggregation of content from a pluralityof content providers, said method comprising: defining a template havinga plurality of display areas; receiving a reference from a contentprovider, said reference identifying content hosted by the contentprovider, said content provider having a content provider identifierassociated therewith; associating the received reference with a displayarea identifier related to at least one of the plurality of displayareas in the defined template; creating a document from the definedtemplate; associating the associated reference, the display areaidentifier, and the content provider identifier with the createddocument; storing the created document in a memory area; receiving arequest for the document, said request comprising the content provideridentifier; responsive to the received request, retrieving the storedreference and display area identifier based on the content provideridentifier; inserting the retrieved reference into the document based onthe retrieved display area identifier; and sending the document with thereference to a client computing device, wherein an application programexecuting on the client computing device then dynamically renders,without input from a user, the document to the user by retrieving thecontent from the content provider via the reference and displaying theretrieved content in the display area identified by the display areaidentifier.
 2. The method of claim 1, further comprising sending thedocument with the reference to the content provider.
 3. The method ofclaim 1, wherein defining the template having the plurality of displayareas comprises defining a web page having a plurality of frames.
 4. Themethod of claim 3, wherein receiving the reference from the contentprovider comprises receiving a hyperlink from the content provider. 5.The method of claim 1, wherein one or more computer-readable media havecomputer-executable instructions for performing the method recited inclaim
 1. 6. The method of claim 1, wherein receiving the reference fromthe content provider comprises receiving only the reference from thecontent provider.
 7. The method of claim 1, wherein associating thereceived reference with the display area identifier related to the atleast one of the plurality of display areas in the defined templatecomprises associating only the received reference with the display areaidentifier related to the at least one of the plurality of display areasin the defined template.
 8. The method of claim 1, wherein associatingthe associated reference, the display area identifier, and the contentprovider identifier with the created document comprises associating onlythe associated reference, the display area identifier, and the contentprovider identifier with the created document.
 9. The method of claim 1,wherein inserting the retrieved reference into the document based on theretrieved display area identifier comprises inserting only the retrievedreference into the document based on the retrieved display areaidentifier.
 10. The method of claim 1, wherein the application programexecuting on the client computing device then dynamically renders,without input from the user, the document to the user by retrieving thecontent from the content provider via the reference and displaying onlythe retrieved content in the display area identified by the display areaidentifier.
 11. The method of claim 1, wherein receiving the referencefrom the content provider comprises receiving, from the contentprovider, the reference without receiving the content identified by thereference.
 12. The method of claim 1, wherein the content is retrievedby the application program after said sending the document.
 13. A methodof enabling dynamic aggregation of content from a plurality of contentproviders, said method comprising: defining a template document having aplurality of frames; receiving a hyperlink from a content provider, saidhyperlink identifying content hosted by the content provider, saidcontent provider having a content provider identifier associatedtherewith; associating the received hyperlink with a frame identifierrelated to one of the plurality of frames in the defined templatedocument; creating a web page from the defined template document;associating the associated hyperlink, the frame identifier, and thecontent provider identifier with the created web page; storing thecreated web page in a memory area; receiving a request for the web page,said request comprising the content provider identifier; responsive tothe received request, retrieving the stored hyperlink and frameidentifier based on the content provider identifier; inserting theretrieved hyperlink into the web page based on the retrieved frameidentifier; and sending the web page with the hyperlink to a clientcomputing device, wherein a web browser executing on the clientcomputing device then dynamically renders, without input from a user,the web page to the user by downloading the content from the contentprovider via the hyperlink and displaying the downloaded content in theframe identified by the frame identifier.
 14. The method of claim 13,wherein receiving the request comprises receiving a dynamic uniformresource locator having the content provider identifier as a querystring parameter.
 15. The method of claim 13, further comprising sendingthe web page with the hyperlink to the content provider.
 16. The methodof claim 13, wherein defining the template document comprises definingthe template document using a hypertext markup language.
 17. The methodof claim 8, wherein one or more computer-readable media havecomputer-executable instructions for performing the method recited inclaim
 13. 18. One or more computer-readable media havingcomputer-executable components for enabling dynamic aggregation ofcontent from a plurality of content providers, said componentscomprising: a template component to define a template having a pluralityof display areas; an interface component to receive a reference from acontent provider, said reference identifying content hosted by thecontent provider, said content provider having a content provideridentifier associated therewith, said interface component furtheradapted to associate the received reference with a display areaidentifier related to at least one of the plurality of display areas inthe template defined by the template component; a memory component tocreate a document from the template defined by the template component,and to store the reference, the display area identifier, and the contentprovider identifier with the created document in a memory area, whereinthe interface component is further adapted to receive a request for thedocument, said request comprising the content provider identifier,wherein the memory component, responsive to the request received by theinterface component, is further adapted to retrieve the stored referenceand display area identifier based on the content provider identifier;and a generation component to insert the reference retrieved by thememory component into the document based on the display area identifierretrieved by the memory component, wherein the interface component isfurther adapted to send the document with the reference inserted by thegeneration component to a client computing device, wherein anapplication program executing on the client computing device thendynamically renders, without input from a user, the document to the userby retrieving the content from the content provider via the referenceand displaying the retrieved content in the display area identified bythe display area identifier.
 19. The computer-readable media of claim18, wherein the template component is further adapted to define a webpage having a plurality of frames.
 20. The computer-readable media ofclaim 18, wherein the interface component is further adapted to receivea hyperlink from the content provider.
 21. A system for enabling dynamicaggregation of content from a plurality of content providers, saidsystem comprising: a first memory area to store a template defining aplurality of display areas; a second memory area to store a plurality ofreferences each identifying content hosted by a content provider,wherein each of the plurality of references is associated with one ofthe plurality of display areas in the template stored in the firstmemory area; and a computing device to create a document from thetemplate stored in the first memory area and to dynamically insert eachof the plurality of references stored in the second memory area into theassociated display area of the created document responsive to a requestfor the document, wherein the computing device is further adapted tosend the document with the plurality of references to a clientapplication program responsive to a request from a user for thedocument, wherein the client application program then executes todynamically retrieve the content via the references and to render,without input from the user, the content in the document to the user.22. The system of claim 21, wherein the document comprises a web page,wherein each of the references comprises a hyperlink, and wherein eachof the display areas comprises a frame.
 23. The system of claim 21,wherein one of the plurality of references comprises a reference to auser authentication service.
 24. The system of claim 21, wherein each ofthe plurality of references identifies content from a different contentprovider.
 25. The system of claim 21, wherein the content identifies thecontent provider associated therewith.
 26. The system of claim 21,wherein the content comprises one or more of the following: text,graphics, audio, and video.
 27. A web service for cobranding a loginuser interface, said web service comprising: a template documentdefining a plurality of frames; a plurality of hyperlinks eachidentifying content hosted by a content provider, wherein each of theplurality of hyperlinks is associated with one of the plurality offrames defined in the template document, wherein the content for one ofthe plurality of hyperlinks includes a user name text box and a passwordtext box; and computer-executable instructions to dynamically create aweb page from the defined template document and to insert each of theplurality of hyperlinks into the associated frame in the created webpage responsive to a request for the web page, wherein thecomputer-executable instructions, when executed, send the created webpage to a client computing device responsive to a request for the webpage from a user, and wherein the client computing device, without inputfrom the user, then dynamically retrieves the content identified by eachof the hyperlinks and renders the retrieved content in the associatedframes in the web page.
 28. The web service of claim 27, wherein theclient comprises an application program or a computing device or both.29. The web service of claim 27, further comprising another plurality ofhyperlinks each identifying content associated with another contentprovider, and wherein the computer-executable instructions execute,responsive to a request from the another content provider, todynamically create another web page from the defined template documentand to retrieve the another plurality of hyperlinks and to insert theretrieved another plurality of hyperlinks into the associated frames inthe another web page.